import { htmlToMarkdown } from '../markdown'

/**
 * 导出工具函数
 */

/**
 * 将HTML内容导出为Markdown文件
 * @param html HTML内容
 * @param filename 文件名（不含扩展名）
 */
export function exportToMarkdown(html: string, filename: string = 'document'): void {
  try {
    // 将HTML转换为Markdown
    const markdown = htmlToMarkdown(html)

    // 创建Blob对象
    const blob = new Blob([markdown], { type: 'text/markdown;charset=utf-8' })

    // 创建下载链接
    const url = URL.createObjectURL(blob)
    const link = document.createElement('a')
    link.href = url
    link.download = `${filename}.md`

    // 触发下载
    document.body.appendChild(link)
    link.click()

    // 清理
    document.body.removeChild(link)
    URL.revokeObjectURL(url)

    console.log('[导出] Markdown文件导出成功', filename)
  } catch (error) {
    console.error('[导出] Markdown文件导出失败', error)
    throw error
  }
}

/**
 * 将HTML内容导出为HTML文件
 * @param html HTML内容
 * @param filename 文件名（不含扩展名）
 */
export function exportToHtml(html: string, filename: string = 'document'): void {
  try {
    // 创建完整的HTML文档
    const fullHtml = `<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>${filename}</title>
  <style>
    body {
      max-width: 800px;
      margin: 0 auto;
      padding: 20px;
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif;
      line-height: 1.6;
      color: #333;
    }
    img {
      max-width: 100%;
      height: auto;
    }
    table {
      border-collapse: collapse;
      width: 100%;
      margin: 1em 0;
    }
    th, td {
      border: 1px solid #ddd;
      padding: 8px;
      text-align: left;
    }
    th {
      background-color: #f5f5f5;
    }
    code {
      background-color: #f5f5f5;
      padding: 2px 4px;
      border-radius: 3px;
      font-family: 'Courier New', Courier, monospace;
    }
    pre {
      background-color: #f5f5f5;
      padding: 12px;
      border-radius: 4px;
      overflow-x: auto;
    }
    pre code {
      background-color: transparent;
      padding: 0;
    }
  </style>
</head>
<body>
${html}
</body>
</html>`

    // 创建Blob对象
    const blob = new Blob([fullHtml], { type: 'text/html;charset=utf-8' })

    // 创建下载链接
    const url = URL.createObjectURL(blob)
    const link = document.createElement('a')
    link.href = url
    link.download = `${filename}.html`

    // 触发下载
    document.body.appendChild(link)
    link.click()

    // 清理
    document.body.removeChild(link)
    URL.revokeObjectURL(url)

    console.log('[导出] HTML文件导出成功', filename)
  } catch (error) {
    console.error('[导出] HTML文件导出失败', error)
    throw error
  }
}

/**
 * 将HTML内容复制到剪贴板（作为纯文本）
 * @param html HTML内容
 */
export async function copyAsPlainText(html: string): Promise<void> {
  try {
    // 创建临时div元素
    const tempDiv = document.createElement('div')
    tempDiv.innerHTML = html

    // 提取纯文本
    const plainText = tempDiv.textContent || tempDiv.innerText || ''

    // 复制到剪贴板
    await navigator.clipboard.writeText(plainText)

    console.log('[导出] 纯文本已复制到剪贴板')
  } catch (error) {
    console.error('[导出] 复制到剪贴板失败', error)
    throw error
  }
}

/**
 * 将Markdown内容复制到剪贴板
 * @param html HTML内容
 */
export async function copyAsMarkdown(html: string): Promise<void> {
  try {
    // 将HTML转换为Markdown
    const markdown = htmlToMarkdown(html)

    // 复制到剪贴板
    await navigator.clipboard.writeText(markdown)

    console.log('[导出] Markdown已复制到剪贴板')
  } catch (error) {
    console.error('[导出] 复制Markdown到剪贴板失败', error)
    throw error
  }
}
